const api = require('../../../utils/api')

Page({
  data: {
    username: '',
    password: '',
    isLoading: false
  },

  // 输入用户名
  onUsernameInput(e) {
    this.setData({
      username: e.detail.value
    })
  },

  // 输入密码
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    })
  },

  // 登录
  async handleLogin() {
    const { username, password } = this.data
    
    // 表单验证
    if (!username.trim()) {
      wx.showToast({
        title: '请输入用户名',
        icon: 'none'
      })
      return
    }
    if (!password.trim()) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      })
      return
    }

    this.setData({ isLoading: true })

    try {
      console.log('开始登录请求...')
      const res = await api.login({
        username,
        password
      })
      console.log('登录响应:', res)

      if (!res || !res.success) {
        throw new Error(res?.message || '登录失败')
      }

      const userData = res.data
      if (!userData || !userData.token) {
        throw new Error('登录失败，响应数据格式错误')
      }

      // 检查用户角色
      if (!userData.role) {
        throw new Error('登录失败，无法获取用户角色')
      }

      // 检查用户角色
      const role = userData.role;
      if (role !== 'MERCHANT') {
        throw new Error('您没有商家权限');
      }

      // 存储用户信息和token到独立的键中
      wx.setStorageSync('merchant_token', userData.token)
      wx.setStorageSync('merchantInfo', userData)
      // 同时清除可能存在的普通用户信息，避免冲突
      wx.removeStorageSync('token')
      wx.removeStorageSync('userInfo')
      
      wx.showToast({
        title: '登录成功',
        icon: 'success',
        duration: 1500
      })

      // 跳转到商家管理主页
      setTimeout(() => {
        wx.redirectTo({
          url: '/pages/admin/home/home'
        })
      }, 1500)
    } catch (error) {
      console.error('登录错误:', error)
      wx.showToast({
        title: error.message || '登录失败，请重试',
        icon: 'none',
        duration: 2000
      })
    } finally {
      this.setData({ isLoading: false })
    }
  }
}) 